# 单引号可以定义
print('面对疾风吧')
# 双引号可以定义
print("面对疾风吧")
# 三引号可以定义(这个可以换行)
print("""单引号和双引号都只能一行显示
                                    但是三引号可以多行显示""")
# 双引号中的单引号可以不用转义
print("我想我'以后'可以不要如此孤独")
# 单引号中的双引号不用转义
print('我也想有"一个"好看的女朋友陪在身边')
# 单引号中的单引号需要转义，同理双引号中的双引号也是需要转义
print('我想要的很多，但是我得到\'的\'却很少')

# 如果不希望前置 \ 的字符转义成特殊字符，可以使用 原始字符串，在引号前添加 r 即可
print('C:\some\name')
print(r'C:\some\name')

# 字符串可以用 + 合并（连接到一起），也可以用 * 重复
print('我想找' + '女朋友')
print('我想找' * 3 + '女朋友')

# 相邻的两个或多个 字符串字面值 （引号标注的字符）会自动合并
text = ('我想要'
        '天上的月亮')
print(text)

# 字符串支持索引（下标访问），第一个字符的索引是 0
word = 'python'
print(word[0])
print(word[1])
print(word[2])

# 索引还支持负数，用负数索引时，从右边开始计数，第一个是-1
print(word[-1])
print(word[-2])
print(word[-3])
# -0与0其实都是一样的，都是第一个位置上的字符
print(word[0])

# 除了索引，字符串还支持 切片。索引可以提取单个字符，切片 则提取子字符串
print(word[0:2])  # 从下标为0截取到下标为2的前一位，不包括下标为2的字符（左闭右开区间）
print(word[2:5])  # 从下标为2截取到下标为5的前一位(左闭右开区间)
# 切片索引的默认值很有用；省略开始索引时，默认值为 0，省略结束索引时，默认为到字符串的结尾
# 注意，输出结果包含切片开始，但不包含切片结束。因此，s[:i] + s[i:] 总是等于 s
print(word[:2])
print(word[4:])
print(word[-2:])  # 这里注意我理解的这个地方是倒着切片的，其实不是
# 索引越界会报错
# print(word[100])
print(word[123:])  # 切片会自动处理下标越界的情况

# 内置函数 len() 返回字符串的长度
print(len(word))

# 字符串的格式化
name = "黄涛"
content = "我的名字是：%s" % name
print(content)
age = 23
text = "我的名字是：%s, 我的年龄是：%d，我的身高是:%.2f" % (name, age, 176.236)
print(text)

info = "大家好， 我是：{}, 我的年龄是：{}，我的身高是：{}".format("黄涛", 23, 176.39)
print(info)

message = "结婚"
print(f'我想跟你{message}')

# 去掉后缀
print("沙发,洗衣机,大床房,".removesuffix(","))
